package com.ppc.service;

import com.ppc.dto.UserGetMessageDTO;
import com.ppc.dto.UserSendMessageDTO;
import com.ppc.result.PageResult;
import com.ppc.vo.MessageVO;
import java.util.List;

/**
 * 聊天服务的接口
 *
 * @author jianKangS1
 * @date 2023/12/20
 */
public interface ChatService {

  /**
   * 用户，分页查询我的对话
   *
   * @param page
   * @param pageSize
   * @return {@link PageResult }
   * @description
   */
  PageResult pageQueryEmployer(Integer page, Integer pageSize);

  /**
   * 雇主，添加和工人的对话
   *
   * @param workerId
   * @return {@link Long }
   * @description
   */
  Long addChatEmployer(Long workerId);

  /**
   * 工人，添加和雇主的对话
   *
   * @param employerId
   * @return {@link Long }
   * @description
   */
  Long addChatWorker(Long employerId);

  /**
   * 雇主发消息
   *
   * @param userSendMessageDTO
   * @description
   */
  void sendMessageEmployer(UserSendMessageDTO userSendMessageDTO);

  /**
   * 获取某个对话的消息
   *
   * @param userGetMessageDTO
   * @return {@link List }<{@link MessageVO }>
   * @description
   */
  List<MessageVO> getMessage(UserGetMessageDTO userGetMessageDTO);

  /**
   * 工人，发消息
   *
   * @param userSendMessageDTO
   * @description
   */
  void sendMessageWorker(UserSendMessageDTO userSendMessageDTO);


  /**
   * 工人，分页查询我的对话
   *
   * @param page
   * @param pageSize
   * @return {@link PageResult }
   * @description
   */
  PageResult pageQueryWorker(Integer page, Integer pageSize);

  /**
   * 雇主，已读消息
   *
   * @param conversationId
   * @description
   */
  void readMessageEmployer(Long conversationId);

  /**
   * 工人，已读消息
   *
   * @param conversationId
   * @description
   */
  void readMessageWorker(Long conversationId);
}
